菜单
概述
System菜单
select a.node_id, m.name, m.IsSummary, m.ad_window_id,p.ad_process_id,f.ad_form_id,k.ad_workflow_id,i.ad_infowindow_id,s.ad_task_id from ad_treenodemm a
join ad_menu m on a.node_id=m.ad_menu_id and m.isactive='Y'
left join ad_window w on w.ad_window_id=m.ad_window_id and w.isactive='Y'
left join ad_process p on p.ad_process_id=m.ad_process_id and p.isactive='Y'
left join ad_form f on f.ad_form_id=m.ad_form_id and f.isactive='Y'
left join ad_workflow k on k.ad_workflow_id=m.ad_workflow_id and k.isactive='Y'
left join ad_infowindow i on i.ad_infowindow_id=m.ad_infowindow_id and i.isactive='Y'
left join ad_task s on s.ad_task_id=m.ad_task_id and s.isactive='Y'
where a.ad_tree_id = 10
order by 4,5,6,7,8,9
查询结果:660条 ( 有效菜单 )
全部节点=676条(包含16条无效菜单记录),而全部菜单=819条,有效菜单=663条(有3条手工维护掉了)
新建菜单
全部节点
/* 注:系统默认memu有669个节点 ,所有菜单记录=812个 */
/* 系统默认menu的ad_tree_id=10,新menu的ad_tree_id =1000047 ( 依自己环境修改)*/
/* 第一步:先用全部节点检验生成所有树节点 */
/* 第二步:删除新menu中不要的节点(仿照默认菜单) */
delete from ad_treenodemm a
where a.ad_tree_id = 1000047
and a.node_id not in (select node_id from ad_treenodemm where ad_tree_id=10)
/* 第三步:更新主menu的层级关系到新菜单 */
update ad_treenodemm a
set parent_id=nod.parent_id, seqno=nod.seqno
from ad_treenodemm nod
where nod.node_id=a.node_id and nod.ad_tree_id='10' and ad_treenodemm.ad_tree_id='1000047'
/* 注:系统默认memu有669个节点 ,所有菜单记录=812个 */
/* 系统默认menu的ad_tree_id=10,新menu的ad_tree_id =1000047 ( 依自己环境修改)*/
/* 步骤1:新建树,已手工完成,记下树的id */
/* 步骤2:将默认menu的ad_tree_id=10的节点都复制(插入新menu的ad_tree_id =1000047)到ad_treenodemm表 */
insert into ad_treenodemm
select
1000047, /* ad_tree_id,需要修改成新树 */
node_id ,
1000007, /* ad_client_id,需要修改成当前实体 */
0 , /* ad_org_id */
'Y', /* isactive */
current_timestamp(0)::timestamp without time zone,0, /* 创建时间,人 */
current_timestamp(0)::timestamp without time zone,0, /* 更新时间,人 */
parent_id ,
seqno ,
generate_uuid ()
from ad_treenodemm a
join ad_menu m on a.node_id=m.ad_menu_id and m.isactive='Y'
where a.ad_tree_id = 10
分配菜单
新菜单节点
// 还没有找到办法,怎么脚本去掉
// Done with loading - add remainder from buffer
if (m_buffer.size() != 0)
{
if (log.isLoggable(Level.FINEST)) log.finest("clearing buffer - Adding to: " + m_root);
for (int i = 0; i < m_buffer.size(); i++)
{
MTreeNode node = (MTreeNode)m_buffer.get(i);
MTreeNode parent = m_root.findNode(node.getParent_ID());
if (parent != null && parent.getAllowsChildren())
{
parent.add(node);
int sizeBeforeCheckBuffer = m_buffer.size();
checkBuffer(node);
if (sizeBeforeCheckBuffer == m_buffer.size())
m_buffer.remove(i);
i = -1; // start again with i=0
}
}
}
// Nodes w/o parent
if (m_buffer.size() != 0)
{
log.severe ("Nodes w/o parent - adding to root - " + m_buffer);
for (int i = 0; i < m_buffer.size(); i++)
{
MTreeNode node = (MTreeNode)m_buffer.get(i);
m_root.add(node);
int sizeBeforeCheckBuffer = m_buffer.size();
checkBuffer(node);
if (sizeBeforeCheckBuffer == m_buffer.size())
m_buffer.remove(i);
i = -1;
}
if (m_buffer.size() != 0)
log.severe ("Still nodes in Buffer - " + m_buffer);
} // nodes w/o parents